JZ58 对称的二叉树
https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb
解一
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
if (pRoot == null) return true;
return mirror(pRoot.left, pRoot.right);
}
boolean mirror(TreeNode left, TreeNode right) {
if(left == null) return right == null;
if(right == null) return false;
if(left.val != right.val) return false;
return mirror(right.right,left.left) && mirror(right.left,left.right);
}
}
这题其实没有那么难,主要是把左右两边当成一个整体去比对,以及这个递归条件的选择,这里就拿左右两边刚好对称的节点去比较
1
2 3
4 5 6 7
例如这里拿 4-7、5-6 这样对称
然后就是边界条件,当一个为空时,另一个也应该为空